package com.ssy.lingxi.report.api.vo.request;

import javax.validation.constraints.NotNull;
import java.io.Serializable;

/**
 * 操作通知VO
 * @author 伍将
 * @date 2020/11/16
 * @version 2.0.0
 */
public class OperateNoticeVO implements Serializable {
    private static final long serialVersionUID = 5074624556926529642L;

    public OperateNoticeVO() {
        this.memberId = 0L;
        this.roleId = 0L;
        this.dataSource = 0;
        this.increaseOperateType = 0;
        this.increaseCount = 0L;
        this.reduceOperateType = 0;
        this.reduceCount = 0L;
        this.increaseDataId = 0L;
        this.increaseTitle = "";
        this.reduceDataId = 0L;
    }

    /**
     * 会员id
     * 平台账号则为0
     */
    @NotNull(message = "会员id不能为空")
    private Long memberId;

    /**
     * 会员角色id
     * 平台账号则为0
     */
    @NotNull(message = "角色id不能为空")
    private Long roleId;

    /**
     * 数据源
     * 详细参考OperateDataSourceEnum
     */
    @NotNull(message = "数据源不能为空")
    private Integer dataSource;

    /**
     * 增加操作类型
     * 详细参考 MemberOperateTypeEnum：平台会员操作枚举
     *        CommodityInquiryOperateTypeEnum：商品询价
     *        InquiryQuotationOperateTypeEnum: 询价报表
     *        ConfirmInquiryQuotationOperateTypeEnum：确认询价报价
     *        DemandPublishOperateTypeEnum：需求发布
     *        DemandQuotationOperateTypeEnum：需求报价
     *        ConfirmDemandQuotationOperateTypeEnum：确认需求报价
     *        SaleOrderOperateTypeEnum：销售订单
     *        PurchaseOrderOperateTypeEnum：采购订单
     *        CommodityOperateTypeEnum：商品中心
     *        AccountOperateTypeEnum：资金账户
     *        LogisticsOperateTypeEnum：物流中心
     *        SettleAccountPlatformOperateTypeEnum：平台结算
     *        SettleAccountPlatformScoreOperateTypeEnum：平台积分结算
     *        SettleAccountPayableOperateTypeEnum：应付款结算
     *        SettleAccountReceivableOperateTypeEnum：应收款结算
     *        EnhanceProcessOperateTypeEnum： 确认生产通知单
     *        EnhanceSupplierOperateTypeEnum：指派生产通知单
     *        ShopOperateTypeEnum: 店铺
     *        ContractManageOperateTypeEnum: 合同管理
     *        ContractCoordinationOperateTypeEnum：合同协同
     *        ContractApplyAmountOrderOperateTypeEnum：合同请款
     *        PlatformPurchaseOperateTypeEnum 平台采购(询价/竞价/招标 待审核)
     *        PurchaseBiddingOperateTypeEnum：采购-竞价
     *        PurchaseConfirmQuotedPriceOperateTypeEnum：采购-确认报价
     *        PurchaseInquiryOperateTypeEnum：采购-采购询价
     *        PurchaseInviteTenderOperateTypeEnum：采购-招标
     *        PurchaseNeedPlanOperateTypeEnum：采购-需求计划
     *        PurchaseOnlineBiddingOperateTypeEnum：采购-在线竞价
     *        PurchasePlanOperateTypeEnum：采购-采购计划
     *        PurchaseQuotedPriceOperateTypeEnum：采购-报价
     *        PurchaseTenderOperateTypeEnum：采购-投标
     *        MemberImportOperateTypeEnum 会员-入库
     *        MemberKpiOperateTypeEnum 会员-考评
     *        MemberChangeOperateTypeEnum 会员-变更
     *        MemberRectifyOperateTypeEnum 会员-整改
     *        MemberRectifyNoticeOperateTypeEnum 会员-整改通知
     */
    private Integer increaseOperateType;

    /**
     * 增加数量(未变跟时传0)
     */
    private Long increaseCount;

    /**
     * 减少操作类型
     * 详细参考 MemberOperateTypeEnum：平台会员操作枚举
     *        CommodityInquiryOperateTypeEnum：商品询价
     *        InquiryQuotationOperateTypeEnum: 询价报表
     *        ConfirmInquiryQuotationOperateTypeEnum：确认询价报价
     *        DemandPublishOperateTypeEnum：需求发布
     *        DemandQuotationOperateTypeEnum：需求报价
     *        ConfirmDemandQuotationOperateTypeEnum：确认需求报价
     *        SaleOrderOperateTypeEnum：销售订单
     *        PurchaseOrderOperateTypeEnum：采购订单
     *        CommodityOperateTypeEnum：商品中心
     *        AccountOperateTypeEnum：资金账户
     *        LogisticsOperateTypeEnum：物流中心
     *        SettleAccountPlatformOperateTypeEnum：平台结算
     *        SettleAccountPlatformScoreOperateTypeEnum：平台积分结算
     *        SettleAccountPayableOperateTypeEnum：应付款结算
     *        SettleAccountReceivableOperateTypeEnum：应收款结算
     *        EnhanceProcessOperateTypeEnum： 确认生产通知单
     *        EnhanceSupplierOperateTypeEnum：指派生产通知单
     *        ShopOperateTypeEnum: 店铺
     *        ContractManageOperateTypeEnum: 合同管理
     *        ContractCoordinationOperateTypeEnum：合同协同
     *        ContractApplyAmountOrderOperateTypeEnum：合同请款
     *        PurchaseBiddingOperateTypeEnum：采购-竞价
     *        PurchaseConfirmQuotedPriceOperateTypeEnum：采购-确认报价
     *        PurchaseInquiryOperateTypeEnum：采购-采购询价
     *        PurchaseInviteTenderOperateTypeEnum：采购-招标
     *        PurchaseNeedPlanOperateTypeEnum：采购-需求计划
     *        PurchaseOnlineBiddingOperateTypeEnum：采购-在线竞价
     *        PurchasePlanOperateTypeEnum：采购-采购计划
     *        PurchaseQuotedPriceOperateTypeEnum：采购-报价
     *        PurchaseTenderOperateTypeEnum：采购-投标
     *        MemberImportOperateTypeEnum 会员-入库
     *        MemberKpiOperateTypeEnum 会员-考评
     *        MemberChangeOperateTypeEnum 会员-变更
     *        MemberRectifyOperateTypeEnum 会员-整改
     *        MemberRectifyNoticeOperateTypeEnum 会员-整改通知
     */
    private Integer reduceOperateType;

    /**
     * 减少数量(未变跟时传0)
     */
    private Long reduceCount;

    /**
     * 增加数据Id
     */
    private Long increaseDataId;

    /**
     * 增加数据标题
     */
    private String increaseTitle;

    /**
     * 减少数据id
     */
    private Long reduceDataId;

    public Long getIncreaseDataId() {
        return increaseDataId;
    }

    public void setIncreaseDataId(Long increaseDataId) {
        this.increaseDataId = increaseDataId;
    }

    public String getIncreaseTitle() {
        return increaseTitle;
    }

    public void setIncreaseTitle(String increaseTitle) {
        this.increaseTitle = increaseTitle;
    }

    public Long getReduceDataId() {
        return reduceDataId;
    }

    public void setReduceDataId(Long reduceDataId) {
        this.reduceDataId = reduceDataId;
    }

    public Long getMemberId() {
        return memberId;
    }

    public void setMemberId(Long memberId) {
        this.memberId = memberId;
    }

    public Long getRoleId() {
        return roleId;
    }

    public void setRoleId(Long roleId) {
        this.roleId = roleId;
    }

    public Integer getDataSource() {
        return dataSource;
    }

    public void setDataSource(Integer dataSource) {
        this.dataSource = dataSource;
    }

    public Integer getIncreaseOperateType() {
        return increaseOperateType;
    }

    public void setIncreaseOperateType(Integer increaseOperateType) {
        this.increaseOperateType = increaseOperateType;
    }

    public Long getIncreaseCount() {
        return increaseCount;
    }

    public void setIncreaseCount(Long increaseCount) {
        this.increaseCount = increaseCount;
    }

    public Integer getReduceOperateType() {
        return reduceOperateType;
    }

    public void setReduceOperateType(Integer reduceOperateType) {
        this.reduceOperateType = reduceOperateType;
    }

    public Long getReduceCount() {
        return reduceCount;
    }

    public void setReduceCount(Long reduceCount) {
        this.reduceCount = reduceCount;
    }
}
